package com.coolingme.general.transparent;

/**
 * 抽象根节点
 * 透明模式把所有公共方法都放在根节点上
 * 这样就不需要分辨树枝节点和叶子节点了
 *
 * @author wangyue
 * @date 2020-09-18 23:23
 */
public abstract class Component {

    /**
     * 节点名
     */
    protected String name;

    public Component(String name) {
        this.name = name;
    }

    /**
     * 操作
     */
    public abstract String operation();

    /**
     * 添加子节点
     *
     * @param component 子节点
     * @return 是否添加成功
     */
    public boolean addChild(Component component) {
        throw new UnsupportedOperationException("addChild not support");
    }

    /**
     * 删除子节点
     *
     * @param component 子节点
     * @return 是否删除成功
     */
    public boolean removeChild(Component component) {
        throw new UnsupportedOperationException("removeChild not support");
    }

    /**
     * 获取子节点
     *
     * @param index 索引
     * @return 子节点
     */
    public Component getChild(Integer index) {
        throw new UnsupportedOperationException("getChild not support");
    }


}
